perm filename EFSOP.C[11,HE] blob
sn#688191 filedate 1982-12-06 generic text, type T, neo UTF8
/* LINTLIBRARY */
/*
* efsendopen.c
*
* EFTP Package
*
* EfSendOpen -- open an eftp channel for sending a file to standard
* EFTP socket.
*
* EfSendOpenS -- open an eftp channel for sending a file to specified
* socket.
*
* Jeffrey Mogul @ Stanford 28-January-1981
*
* Jeffrey Mogul @ Stanford 17 August 1982
* - added EfSendOpenS
*/
#include <eftp.h>
#include <pupconstants.h>
#include <pupstatus.h>
EfSendOpen(Efchan,Dest,timeout,bswap)
struct EftpChan *Efchan; /* address of empty EftpChan */
struct Port *Dest; /* destination host/net */
int timeout; /* channel timeout in seconds */
int bswap; /* 1=byte-swap, 0= don't */
/* swapping wrt NSO */
{
return(EfSendOpenS(Efchan, Dest, timeout, bswap, EFTPSERVER));
}
EfSendOpenS(Efchan,Dest,timeout,bswap, OurSocket)
struct EftpChan *Efchan; /* address of empty EftpChan */
struct Port *Dest; /* destination host/net */
int timeout; /* channel timeout in seconds */
int bswap; /* 1=byte-swap, 0= don't */
/* swapping wrt NSO */
Socket OurSocket; /* remote socket */
{ /* */
long eftpid;
int opstat;
Efchan->sequence = 0;
Efchan->WaitTime = timeout;
Efchan->remport.host = Dest->host;
Efchan->remport.net = Dest->net;
Efchan->remport.socket = OurSocket;
eftpid = UniqueSocket();
opstat = pupopen(&Efchan->pchan,eftpid,&Efchan->remport);
if (opstat != OK)
return(opstat);
pupsettimeout(&Efchan->pchan,ONESEC);
#ifdef PUP__NNSO
if (bswap) /* means fix up last word */
pupsetmode(&Efchan->pchan,
PCM_WCHECKSUM+PCM_RCHECKSUM+PCM_WFIXLAST);
else
pupsetmode(&Efchan->pchan,
PCM_WCHECKSUM+PCM_RCHECKSUM+PCM_NOWFIXLAST);
#else /* don't byteswap wrt NSO */
pupsetmode(&Efchan->pchan,PCM_WCHECKSUM+PCM_RCHECKSUM);
#endif
pupsetdfilt(&Efchan->pchan,64);
if (bswap)
Efchan->ef_mode = EFTPM_SEND|EFTPM_BYTESWAP;
else
Efchan->ef_mode = EFTPM_SEND;
return(OK);
}